1. Field of the Invention:
The present invention relates to dynamically configurable kernels. More specifically, the present invention relates to a system for automatically loading modules of a kernel on an as needed basis.
2. Art Background:
One central component of a computer system is its operating system kernel. The kernel typically consists of a plurality of modules such as drivers, including streams drivers and device drivers, file system modules, scheduling classes, streams modules, and system calls. These modules are compiled and subsequently linked together to form the kernel. Subsequently, when the system is started or "booted up", the kernel is loaded into memory. However, as technology progresses and more sophisticated and complex modules providing more functionality are generated, and new modules are created, the amount of memory required to store the kernel dramatically increases.
One technique to overcome the memory limitations of the computer system is a pageable kernel. A paging mechanism is implemented in which the kernel memory will be paged or swapped to a disk according to memory usage of the kernel memory. However, it has been found that a substantial portion of the kernel is not pageable and the difficulty in partitioning the kernel into pageable portions far outweighs any potential benefit.
Computer systems are typically statically configured for each projected type of use of the computer. Some computers are employed for tasks which may only require the basic modules. Other computers may be utilized for sophisticated processing and require additional modules. However, the task of configuring or reconfiguring a kernel is not simple and it is typically beyond the skill of a typical user.
In the present invention, virtual kernel functionality is provided. This is achieved by providing modules in the kernel memory on demand and on an as needed basis. Thus, a minimum set of modules is loaded initially into the kernel and the remaining modules are added only when needed. This has been found to dramatically decrease the amount of memory required for the kernel as typically most users of a computer system do not require all the modules available. Furthermore, this technique avoids the need to reconfigure, i.e., (rebuild the kernel) if any of the modules to be loaded into the kernel are changed.
Although it is well known in the art that drivers can be loaded by a user by expressly executing commands to load a driver module, this does not provide for automatically loading modules on an as needed basis to minimize the amount of memory required to maintain the kernel.